#ifndef SM3_AUTH_H
#define SM3_AUTH_H

#include <stddef.h>
#include <gmssl/sm3.h>

#define SM3_DIGEST_LENGTH 32
#define SALT_LENGTH 16

// 以下两个函数仅为API兼容性保留
// 初始化GMSSL库 - 仅保留函数名保持兼容性，实际不需要初始化
int init_gmssl(void);

// 清理GMSSL库资源 - 仅保留函数名保持兼容性，实际不需要清理
void cleanup_gmssl(void);

// 生成随机盐值
int generate_auth_salt(unsigned char *salt, size_t len);

// 使用SM3计算密码哈希(加盐)
int sm3_hash_password(const char *password,
                      const unsigned char *salt, size_t salt_len,
                      unsigned char *hash, size_t hash_len);

// HMAC-SM3签名
int hmac_sm3_sign(const unsigned char *key, size_t key_len,
                  const unsigned char *data, size_t data_len,
                  unsigned char *signature, size_t *sig_len);

// 验证HMAC-SM3签名
int hmac_sm3_verify(const unsigned char *key, size_t key_len,
                    const unsigned char *data, size_t data_len,
                    const unsigned char *signature, size_t sig_len);

// 验证证书链 - 简化接口，避免OpenSSL依赖
int verify_cert_chain(void *store, void *chain);

#endif /* SM3_AUTH_H */